home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Merciful 5
/
Merciful - Disc 5.iso
/
software
/
r
/
real_3d
/
real3dv3.3b.dms
/
real3dv3.3b.adf
/
RPL.LZH
/
RPL
/
saturnus.rpl
< prev
next >
Wrap
Text File
|
1995-04-18
|
4KB
|
202 lines
( Creates a saturnus planet with rings consisting of particles
( ------------------------------------------------------------
6.28 FCONSTANT PI2
"rpl/sys/locks.rpl" LOAD
( Material for planet
: CreMaterial
iLOCK_EXCL MAT_LOCK
"planet" ( name )
0 ( specularity )
25 ( specbright )
0 ( brilliancy )
0 ( transparency )
0 ( turbidity )
0 ( refraction )
0 ( currindex )
100 ( effectiveness )
0 ( density )
0 ( roughness )
204 ( flags )
46 ( turbidpower )
6 ( method )
0 ( handler )
0 ( txt_freqx )
0 ( txt_freqy )
0 ( sp_x )
0 ( sp_y )
1 ( sp_w )
1 ( sp_h )
"" ( handler_prg )
"marble1" ( picture )
0 0 0 0 ( transp.color )
5 ( bumph )
0 ( ditherscale )
0 ( scopehandler )
"" ( scopeexpr )
0 ( scope1 )
0 ( scope2 )
0 ( tcoorhandler )
"" ( tcoorexpr )
0 ( tco1 )
0 ( tco2 )
0 ( bumphandler )
"" ( bumpexpr )
0 ( bmp1 )
0 ( bmp2 )
0 ( colorhandler )
"" ( colorexpr )
0 ( co1 )
0 ( co2 )
0 ( indexhandler )
"" ( indexexpr )
0 ( id1 )
0 ( id2 )
"CEND"
MAT_CREATE DROP
iLOCK_REMOVE MAT_LOCK
;
( see rpl/sys/objects.rpl
2 2 POW CONSTANT lOF_WFINVISIBLE ( Invisible wire frames
( This function creates the actual planet
: CrPlanet
PARAM
FVARIABLE fPlanetSize
ENDPARAM
2 "planet" 0 "CEND" C_LEVEL O_CURRENT DROP
0 0 0 ( center
fPlanetSize FFETCH 0 0 ( a
0 fPlanetSize FFETCH 0 ( b
0 0 fPlanetSize FFETCH ( c
255 255 255 0 ( RGBA )
"planet"
0
"CEND"
C_ELLIPSOID DROP
0 0 0 ( center
fPlanetSize FFETCH 0 0 ( a
0 fPlanetSize FFETCH 0 ( b
0 0 fPlanetSize FFETCH ( c
255 255 255 0 ( RGBA )
"planet" ( name )
2048 ( flags = texture )
"CEND"
"planet" "SMAT"
C_ELLIPSOID DROP
O_GETCURR O_GETPAR O_CURRENT DROP
;
( This creates one particle in given position
: CrParticle
PARAM
VVARIABLE vCenter
FVARIABLE fPartSize
VARIABLE iWireFrames
VARIABLE iRed
VARIABLE iGreen
VARIABLE iBlue
ENDPARAM
vCenter VFETCH
fPartSize FFETCH 0 0 ( a )
0 fPartSize FFETCH 0 ( b )
0 0 fPartSize FFETCH ( c )
iRed FETCH iGreen FETCH iBlue FETCH 0 ( RGBA )
"particle"
iWireFrames FETCH
IF
0
ELSE
lOF_WFINVISIBLE
ENDIF
"CEND"
C_ELLIPSOID DROP
;
( Computes radius for particle in question
: CrRad
PARAM
VARIABLE iCircOrd
FVARIABLE fPartSize
FVARIABLE fPlanetSize
ENDPARAM
iCircOrd FETCH fPartSize FFETCH 4 F* F* fPlanetSize FFETCH 1.5 F* F+
fPartSize FFETCH 0.3 F* RANDOM F* F+
;
( Computes angle for particle in question
: CrAngle
PARAM
VARIABLE iPartOrd
VARIABLE iPartCnt
ENDPARAM
iPartOrd FETCH iPartCnt FETCH F/ PI2 F* PI2 iPartCnt FETCH F/ RANDOM F* F+
;
: CrSaturnus
PARAM
VARIABLE iPartCnt
VARIABLE iCircCnt
FVARIABLE fPartSize
FVARIABLE fPlanetSize
VARIABLE iWireFrames
VARIABLE iRed
VARIABLE iGreen
VARIABLE iBlue
ENDPARAM
CreMaterial
iLOCK_EXCL O_LOCK
( create planet
fPlanetSize FFETCH CrPlanet
( create rings
2 "rings" 0 "CEND" C_LEVEL O_CURRENT DROP
iCircCnt FETCH 0
DO
iPartCnt FETCH 0
DO
I iPartCnt FETCH CrAngle SIN J fPartSize FFETCH fPlanetSize FFETCH CrRad F*
I iPartCnt FETCH CrAngle COS J fPartSize FFETCH fPlanetSize FFETCH CrRad F*
fPartSize FFETCH RANDOM F*
fPartSize FFETCH
iWireFrames FETCH
iRed FETCH
iGreen FETCH
iBlue FETCH
CrParticle
LOOP
LOOP
iLOCK_REMOVE O_LOCK
;
CrSaturnus
FORGET PI2